//axios 公共工具函数
//引入axios
import axios from 'axios'

//引入store仓库
import store from '@/store'
//引入message
import { Message } from 'element-ui'


//封装公共地址
//封装超时时间
const instance = axios.create({
  baseURL: 'http://sell.h5.itsource.cn:8087', //公共地址
  timeout: 10000, //超时时间1
})

//封装请求拦截器
instance.interceptors.request.use(
  //config 请求信息对象
  config => {
    //1 获取token
    // console.log(store.getters.token);
    const token = store.getters.token
    //2 token 挂载在config.headers的某个字段(authorization)和后端商议的
    config.headers.authorization = token

    return config
  },
  //抛出错误信息
  err => {
    return Promise.reject(err)
  }
)

//封装响应拦截器
instance.interceptors.response.use(
  response => {
    let { code, msg } = response.data
    if (code === 0) {
      Message.success(msg)
    }
    if (code === 5001) {
      Message.error(msg)
    }
    if (code === 1) {
      Message.error(msg)
    }
    return response
  },
  //抛出错误信息
  err => {
    let { message, response } = err
    if (response) {
      switch (response.status) {
        case 401:
          Message.error(message)
          break;
        case 403:
          Message.error(message)
          break;
        case 404:
          Message.error(message)
          break;
        case 500:
          Message.error(message)
          break;
        default:
          break;
      }
    }
    return Promise.reject(err)

  }
)

//导出封装好的axios
export default instance